package CapaDatos;

import com.itextpdf.text.BadElementException;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import CapaLogica.ComunicaCliente;
import CapaLogica.ComunicaReserva;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
/**
 *
 * @author Maria
 */
public class GenerarFactura {
    private static ComunicaCliente comunicameACliente = new ComunicaCliente();
    private static ComunicaReserva comunicameAReserva = new ComunicaReserva();

 /** atributo que guarda la direccion en donde se va a generar el recibo de pago**/
    public static String DIRECCION_SALIDA = "C:/Users/Maria/Desktop/"+comunicameACliente.getElCliente().getUsername()+comunicameAReserva.getLaReserva().getID()+".pdf";


  /**
   *
   * @param laReserva objeto de tipo reserva
   * @param losPagos objeto de listaFormaPagos
   * @throws FileNotFoundException
   * @throws BadElementException
   * @throws MalformedURLException
   * @throws IOException
   * @throws DocumentException
   */
    public void recibirReserva (Reserva laReserva, ListaFormaDePago losPagos) throws FileNotFoundException, BadElementException, MalformedURLException, IOException, DocumentException
    {

         Document documento = new Document();
        // Se crea el OutputStream para el fichero donde queremos dejar el pdf.
        FileOutputStream ficheroPdf = new FileOutputStream(DIRECCION_SALIDA);
        // Se asocia el documento al OutputStream y se indica que el espaciado entre
        // lineas sera de 25. Esta llamada debe hacerse antes de abrir el documento
        PdfWriter.getInstance(documento, ficheroPdf).setInitialLeading(25);
        // Se abre el documento.
        documento.open();
        // Se añade una imagen
        Image foto = Image.getInstance("logoResort.jpg");
        foto.scaleToFit(100, 100);
        foto.setAlignment(Chunk.ALIGN_LEFT);
        documento.add(foto);
        // Se añade al documento un parrafo con texto de fuente, tamaño y color de seleccion
        documento.add(new Paragraph("RECIBO DE PAGO\n\n",
                FontFactory.getFont("Comic Sanz MS", // fuente
                16, // tamaño
                Font.BOLD, // estilo
                BaseColor.BLACK)));             // color

        // Se añade una tabla


     PdfPTable tabla = new PdfPTable(2);
        for (int i = 0; i < 1; i++) {
            tabla.addCell("Nombre:");
            tabla.addCell(laReserva.getElCliente().getNombre());
            tabla.addCell("Apellido:");
            tabla.addCell(laReserva.getElCliente().getApellido());
            tabla.addCell("Cedula:");
            tabla.addCell(laReserva.getElCliente().getCedula());
            tabla.addCell("Fecha De Nacimiento:");
            tabla.addCell(laReserva.getElCliente().getFechaNac());
            tabla.addCell("Genero:");
            tabla.addCell(laReserva.getElCliente().getSexo());
            tabla.addCell("Fecha de inicio de reserva:");
            tabla.addCell(laReserva.getFechaInicio());
            tabla.addCell("Fecha de fin de reserva:");
            tabla.addCell(laReserva.getFechaFin());
            tabla.addCell("Numero de habitacion:");
            tabla.addCell(laReserva.getIdHab());
            tabla.addCell("ID de la Reserva:");
            tabla.addCell(String.valueOf(laReserva.getID()));
            tabla.addCell("Monto de su estadia:");
            tabla.addCell(String.valueOf(laReserva.getMonto()));
            tabla.addCell("Datos forma de pago\n");
            tabla.addCell(losPagos.imprimirColeccion());
        }
        documento.add(tabla);
        // Cerrando el documento
        documento.close();

}
}